grub2: add support for devicetree
authorRicardo Salveti <ricardo@foundries.io>
Mon, 17 Dec 2018 18:17:51 +0000 (16:17 -0200)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 21 Dec 2018 14:00:42 +0000 (14:00 +0000)
Similar as available for u-boot (ce2995e1dc1557c4d97ef5af807eacf3ef4a22d8)
and syslinux (c5112c25e4519835c4cd53f4350c1b2f2a477746), enable parsing
and writing devicetree filename into grub.cfg.

This is required by arm64-based devices running edk2 instead of u-boot
as the main bootloader (e.g. 96boards HiKey and HiKey960).

Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
Closes: #1790
Approved by: cgwalters

src/boot/grub2/ostree-grub-generator
src/libostree/ostree-bootloader-grub2.c

index 2208c1bfc1c1899b52847d155dd5083fb384d2ab..10645c7419d7fc8b59c720bc4f47fb6c13706141 100644 (file)
@@ -33,6 +33,7 @@ read_config()
     initrd=""
     options=""
     linux=""
+    devicetree=""
 
     while read -r line
     do
@@ -48,6 +49,9 @@ read_config()
             "linux")
                 linux=${value}
                 ;;
+            "devicetree")
+                devicetree=${value}
+                ;;
             "options")
                 options=${value}
                 ;;
@@ -74,6 +78,9 @@ populate_menu()
         if [ -n "${initrd}" ] ; then
             menu="${menu}\t initrd ${boot_prefix}${initrd}\n"
         fi
+        if [ -n "${devicetree}" ] ; then
+            menu="${menu}\t devicetree ${boot_prefix}${devicetree}\n"
+        fi
         menu="${menu}}\n\n"
     done
     # The printf command seems to be more reliable across shells for special character (\n, \t) evaluation
index 6831382cea5174a4e9b17d5c55defcf8be63669c..57673c7d6b215c2ce122563c7f5c3e311482d9af 100644 (file)
@@ -191,6 +191,7 @@ _ostree_bootloader_grub2_generate_config (OstreeSysroot                 *sysroot
       const char *options;
       const char *kernel;
       const char *initrd;
+      const char *devicetree;
       char *quoted_title = NULL;
       char *uuid = NULL;
       char *quoted_uuid = NULL;
@@ -246,6 +247,15 @@ _ostree_bootloader_grub2_generate_config (OstreeSysroot                 *sysroot
           g_string_append_c (output, '\n');
         }
 
+      devicetree = ostree_bootconfig_parser_get (config, "devicetree");
+      if (devicetree)
+        {
+          g_string_append (output, "devicetree");
+          g_string_append_c (output, ' ');
+          g_string_append (output, devicetree);
+          g_string_append_c (output, '\n');
+        }
+
       g_string_append (output, "}\n");
     }